home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / vbdatabs / hxcrc.h < prev    next >
C/C++ Source or Header  |  1999-03-17  |  2KB  |  64 lines

  1. // ------------------------------- //
  2. // -------- Start of File -------- //
  3. // ------------------------------- //
  4. // ----------------------------------------------------------- //
  5. // C++ Header File Name: hxcrc.h 
  6. // Compiler Used: MSVC40, DJGPP 2.7.2.1, GCC 2.7.2.1, HP CPP 10.24
  7. // Produced By: Doug Gaer    
  8. // File Creation Date: 08/17/1998 
  9. // Date Last Modified: 03/17/1999
  10. // ----------------------------------------------------------- // 
  11. // ---------- Include File Description and Details  ---------- // 
  12. // ----------------------------------------------------------- // 
  13. /*
  14. THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.
  15. THE ENTIRE RISK OF THE QUALITY AND PERFORMANCE OF THIS SOFTWARE
  16. IS WITH YOU. SHOULD ANY ELEMENT OF THIS SOFTWARE PROVE DEFECTIVE,
  17. YOU WILL ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR
  18. CORRECTION.
  19.  
  20. The CRC Class (Cyclic Redundancy Check) is used to calculate a
  21. sophisticated checksum based on the algebra of polynomials over
  22. the integers (mod 2). The Cyclic Redundancy Check, is a way to
  23. detect bit errors that occur during data storage or transmission.
  24. The CRC algorithm operates on a block of data as a single large
  25. numerical value. The algorithm divides this large value by the
  26. CRC polynomial or generator polynomial, leaving the remainder,
  27. which is the CRC result. 
  28. */
  29. // ----------------------------------------------------------- //   
  30. #ifndef __HXCRC_HPP__
  31. #define __HXCRC_HPP__
  32.  
  33. #include <fstream.h>
  34.  
  35. // (C)yclic (R)edundancy (C)heck Class
  36. class hxCRC
  37. {
  38. public:
  39.   hxCRC();
  40.   ~hxCRC() { }
  41.   
  42. public:
  43.   void crc32init();
  44.   void crc16init();
  45.   void crc16CCITTinit();
  46.   
  47.   unsigned long calcCRC32(fstream &infile);
  48.   
  49.   // mode 1 = XModem/Zmodem/Arc/Hpack/LZH    
  50.   // mode 0 = CCITT CRC-16, AX.25 Europan    
  51.   unsigned short calcCRC16(fstream &infile, int mode = 1);
  52.   
  53. public:
  54.   unsigned long crc32tab[256];    // CRC-32 table
  55.   unsigned short crc16tab[256];   // CRC-16 table 
  56.   unsigned short crc16CCITT[256]; // CCITT CRC-16 table
  57. };
  58.  
  59. #endif  // __HXCRC_HPP__
  60. // ----------------------------------------------------------- // 
  61. // ------------------------------- //
  62. // --------- End of File --------- //
  63. // ------------------------------- //
  64.